Authera.SDK
1.1.0
dotnet add package Authera.SDK --version 1.1.0
NuGet\Install-Package Authera.SDK -Version 1.1.0
<PackageReference Include="Authera.SDK" Version="1.1.0" />
<PackageVersion Include="Authera.SDK" Version="1.1.0" />
<PackageReference Include="Authera.SDK" />
paket add Authera.SDK --version 1.1.0
#r "nuget: Authera.SDK, 1.1.0"
#:package Authera.SDK@1.1.0
#addin nuget:?package=Authera.SDK&version=1.1.0
#tool nuget:?package=Authera.SDK&version=1.1.0
Authera SDK for C# / .NET
Version: 1.1.0 - Fully Tested & Production Ready ✅
The official C# SDK for interacting securely with the Authera Platform natively from your .NET desktop applications (WPF, WinForms, Avalonia, Unity, etc).
Authera combines Multi-Tenant Authentication, highly restrictive Hardware ID License constraints, and DRM infrastructure to protect your released software.
Installation
Install the package directly from NuGet via the dotnet CLI:
dotnet add package Authera.SDK --version 1.0.3
Or via NuGet Package Manager:
Install-Package Authera.SDK -Version 1.0.3
Version 1.1.0 - What's New
✅ Implemented CheckForUpdateAsync() system for secure app distribution.
✅ Smart caching: Native Windows AppData versioning to reduce bandwidth.
✅ Atomic Downloads: Direct streaming from Cloudflare R2 via presigned URLs.
✅ All 6 core tests passing (Login, License, and Smart Auto-Update)
Basic Usage
Option A: Validating License Keys
To validate a traditional license key (XXXX-YYYY-ZZZZ) generated from your Dashboard properly inside your desktop software:
using System;
using System.Threading.Tasks;
using AutheraSDK;
public class Program
{
public static async Task Main()
{
// Initialize the Authera Client with your App's isolated keys
var authera = new AutheraClient(
appId: "APP-UUID-FROM-DASHBOARD",
clientKey: "APP-API-KEY-FROM-DASHBOARD"
);
string licenseKey = "XXXX-YYYY-ZZZZ-1234";
// Validate recursively creates a Hardware ID and
// computes an HMAC-SHA256 signature to transmit securely to the backend.
var response = await authera.ValidateLicenseAsync(licenseKey);
if (response.Valid)
{
Console.WriteLine($"License is active! Expires: {response.License?.expires_at}");
// Launch application core
}
else
{
Console.WriteLine($"Piracy or invalid license blocked: {response.Error}");
// Terminate application
}
}
}
Option B: End-User Accounts (Username & Password)
To act as a traditional authentication barrier instead of random keys, you can generate authentic User Accounts on your dashboard and let your customers log in conventionally:
using System;
using System.Threading.Tasks;
using AutheraSDK;
public class Program
{
public static async Task Main()
{
var authera = new AutheraClient(
appId: "APP-UUID-FROM-DASHBOARD",
clientKey: "APP-API-KEY-FROM-DASHBOARD"
);
// Pass the raw username and password. HWID is bound automatically on first execution!
var response = await authera.LoginAsync("customer_username", "secret_password");
if (response.Valid)
{
Console.WriteLine($"Welcome back, {response.User.username}!");
Console.WriteLine($"Account Expiry Status: {response.User.expires_at}");
}
else
{
Console.WriteLine($"Login Failed: {response.Error}");
}
}
}
Option C: Smart Auto-Updates
The SDK includes a native auto-updater that manages downloads securely into %APPDATA%/Authera/. It handles version checking server-side to ensure you only download when a new version is actually available.
using System;
using System.Threading.Tasks;
using AutheraSDK;
public class Program
{
public static async Task Main()
{
var authera = new AutheraClient(
appId: "APP-UUID-FROM-DASHBOARD",
clientKey: "APP-API-KEY-FROM-DASHBOARD"
);
Console.WriteLine("[*] Checking for updates...");
var result = await authera.CheckForUpdateAsync();
if (result.Success)
{
if (result.UpToDate)
{
Console.WriteLine($"[+] Already up to date! (v{result.Version})");
}
else if (result.FileDownloaded)
{
Console.WriteLine($"[+] Downloaded new version (v{result.Version})");
Console.WriteLine($"[+] File path: {result.FilePath}");
// Use System.Diagnostics.Process.Start(result.FilePath) to launch!
}
}
else
{
Console.WriteLine($"[-] Update check failed: {result.Error}");
}
}
}
Anti-Piracy Architecture Built-In
- Hardware ID Extractor: Leveraging native
System.ManagementWMI interfaces, this client parses actual Physical Identifiers from the user'sWin32_BaseBoard(Motherboard) andWin32_Processor(CPU) inside Windows ecosystems to generate an immutable, anonymous PC hash. - Cryptography: All traffic to your isolated Supabase Edge cluster is packed and signed via
.NETSystem.Security.Cryptography.HMACSHA256. Supabase rejects any tampered or spoofed attempts to validate false APIs.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Management (>= 7.0.0)
- System.Text.Json (>= 8.0.5)
-
net6.0
- System.Management (>= 7.0.0)
- System.Text.Json (>= 8.0.5)
-
net8.0
- System.Management (>= 7.0.0)
- System.Text.Json (>= 8.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.